Process pool methods and apparatus

ABSTRACT

The present invention relates to methods and apparatus for managing computers, data, information and peripheral resources particularly in a computer network. More specifically, the invention relates to improved methods and apparatus for computer network management. The improved methods and apparatus of the present invention are highly flexible and easily extensible and optimize the network&#39;s resources.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention relates to methods and apparatus for managing computers, data, information and peripheral resources particularly in a computer network. More specifically, the invention relates to improved methods and apparatus for computer network management. The improved methods and apparatus of the present invention are highly flexible and easily extensible and optimize the network's resources.

[0003] 2. Prior Art Background

[0004] A computer network as used herein is used in its broadest sense i.e. as any configuration of data processing devices and software connected for information exchange. Generally, a network serves to connect together a plurality of devices; e.g., user interfaces, data devices, processors, memory, and may also include terminals, computers, etc. Networks typically comprise a plurality of CPU's some of which function as servers to provide services to the other computers connected to the network.

[0005] There are many types of computer networks in existence. They are known by various names including Local Area Network (LAN), Wide Area Network (WAN), Internet and the like and may be implemented in accordance with a variety of known architectures.

[0006] The functions performed by a server in a network vary depending on the network and the server's place within the particular network. For example, at least one server typically functions as a “file server” for the network. (See, generally, Rinzler and Gancher, The Computerland Guide To 25 Local Area Networks Computerland Books, Pleasanton, Calif. pp. 4-34). A computer functioning as a file server will usually have significantly more data storage capacity than the other computers connected to the network. The networked computers utilize this data storage capacity to store data or information usually in the form of files. Software executed by the file server controls access to this data or information.

[0007] In addition to a fileserver, a network can include servers such as a print server, a database server, or facsimile server. A print server typically provides access to a centralized printer shared by the network. A network user is able to send a print request to the print server where the request and data to be printed are stored, prioritized with respect to other print requests, and placed on a print queue until the printer is ready to print the job. A database server provides for the centralized storage of a database accessible to the network users. A facsimile server provides users connected to the network access to a facsimile capability located in a centralized facsimile server.

[0008]FIG. 1 (prior art) illustrates an example of a computer network architecture commonly known as a client-server architecture. In the client-server network of FIG. 1, there are a plurality of servers 10 coupled to a network bus 12. A server 10 is typically implemented by a computer or a workstation that is special purposed e.g., large disk space, high speed CPU, multiple LAN connections, etc., while network bus 12 may be implemented by any of the known network routing media such as coaxial cables, multi-strand cables, fiber optic cables, or even a wireless medium such as for example infrared beams. A plurality of client terminals 14, representing known computers or computing terminals, are coupled to the same network bus 12, each of which is capable of communicating with any one of servers 10 or other terminals 14 using one of the known network protocols such as Apple Talk™, TCP/IP and the like.

[0009] On servers 10, there are installed instantiations of network service applications, which are typically software implemented, for performing programmed tasks. Examples of such network service applications include print service, e-mail service, file service, and the like. A print service application manages the printer or print queue associated with a server, thereby enabling client terminals 14 to utilize that printer for their printing needs. An e-mail service application performs e-mail management and routing tasks, permitting client terminals 14 to communicate among one another.

[0010] A server 10 may be coupled to one of the network's central file storage facilities, e.g., one of the known persistent memory devices (omitted in FIG. 1 for clarity) such as a hard disk, a RAID (redundant arrays of independent drives) system, an optical storage device, and the like. A file service instantiation installed on that server 10 performs tasks related to file management for the benefit of users on client terminals 14. Such file service tasks include access privilege management, storage space management, and the like. The number and types of network services available to a network are practically limitless.

[0011] As mentioned earlier, instantiations of these network services are installed on the network servers. A network service application, e.g., one of the aforementioned print service, file service, or e-mail service applications, may have many instantiations, either on the same server or on different servers. For example, most or all servers 10 in FIG. 1 may each have a print service instantiations installed to manage a network printer. Further, a given service instantiation on a server may service multiple client terminals simultaneously. Likewise, a client terminal may establish a logical session with multiple services simultaneously, either a single server or on multiple servers.

3. SUMMARY OF THE INVENTION

[0012] In a client server environment the client terminals frequently have fewer resources, such as RAM or CPU etc., available at the terminal and rely, in many applications, on the server for all or part of these resources. As a result, the server services multiple transactions from the various clients. In most applications, each client has dedicated resources on the server, even when the client terminal is not being employed. In the present invention, resources are implemented dynamically i.e., occurring at the time it is needed as opposed to occurring at a predetermined or fixed time. For example, when a process is performed on the network of the present invention, the valuable system resources are not dedicated for the entire session. As a result, when a user issues a transaction, the present invention dedicates a process to that transaction. When that transaction is complete, the process becomes available for other transaction processing. Thus, a process is not dedicated to a user but to a transaction. For example, if two users issue a transaction at the same time, a new process is created for the second transaction. Either process will be terminated if the process is not used for a predetermined period of time and processes currently not in use will not consume system resources. The present invention thus results in more efficient use of system resources. Thus, the server or servers in the present invention are used more efficiently, and a pool of 50 users may use only 10 processes. This efficiency of use may also permit the network to require fewer user licenses from software owners since the present invention will regulate the use of a software programs so that there is only a predetermined number of processes using the software program at any given point in time.

[0013] The dynamic process behavior of the present invention is provided by a pool master which is the main interface to the client terminals and monitors. The pool master dispatches requests, a pool agent or transaction processor services all transactions and a pool application manager provides dynamic modification of the process pool and monitors the behavior of the pool. The number of pool agents can increase or decrease depending on the flow of requests from the client terminals.

4. BRIEF DESCRIPTION OF THE DRAWINGS

[0014]FIG. 1 is, as described in detail above, a diagrammatic representation showing a typical network.

[0015]FIG. 1A is a schematic of a typical computer system useful in the operation of the present invention.

[0016]FIG. 2 is a schematic diagram of the network of the present invention.

[0017]FIG. 3 is an example of the process pool configuration of the present invention.

[0018]FIGS. 4 and 5 are diagrammatic representations showing the startup of the process pool.

[0019]FIGS. 6, 7 and 8 are diagrammatic representations showing the shut down of the process pool.

[0020]FIGS. 9, 10 and 11 are diagrammatic representations showing the establishment of a process pool using a connectionless protocol such as UDP/IP.

[0021]FIGS. 12 and 13 are diagrammatic representations showing the establishment of a process pool using a connection oriented protocol such as TCP/IP.

[0022]FIG. 14 is a diagrammatic representation demonstrating request processing in a connection oriented protocol such as a TCP/IP process pool.

[0023]FIG. 15 is a diagrammatical representation illustrating a dual protocol process pool.

[0024]FIG. 16 is diagrammatic representation of the process pool of the present invention using a master daemon.

[0025]FIG. 17 is a diagrammatic representation of the process pool of the present where the master creates a number of pool agents.

[0026]FIG. 18 is a diagrammatic representation of the process pool of the present invention where there is a master pool master connected to a number of pool masters.

[0027]FIG. 19 is a diagrammatic representation of the process pool of the present invention where there are more than one pool masters creating agents.

[0028]FIG. 20 is a diagrammatic representation of the process pool of the present invention in an Internet client server network.

5. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0029] Typically, servers in a given network are provided with more computing, network connectivity, and storage resources than either client terminals or administrative consoles although they may all be implemented using similar computer systems. Referring to FIG. 1A. The Client/Server Network of the present invention may include one or more servers and one or more clients. The network should comprise at least one server, however, this server need not be a dedicated server. The server may comprise one or more computer systems 30 which may include one or more central processing units (CPU) 31, read only memory (ROM) 32, random access memory (RAM) 33, expansion RAM 34, input/output (I/O) circuitry 35, display assembly 36, input device 37, and expansion bus 38. Computer system 30 may also optionally include a mass storage unit 39 such as a disk drive unit or nonvolatile memory such as flash memory and a real-time clock 40. In one embodiment, mass storage unit 39 may include units which utilizes removable computer readable media, such as floppy disks, opto-magnetic media, optical media, and the like for the storage of programs and data.

[0030] CPU 31 is a computational device such as but not limited to an analog, digital, optical or biological processor. For example, CPU 31 may be a microprocessor. CPU 31 is coupled to ROM 32 by a data bus 41, control bus 42, and address bus 43. ROM 32 may partially contain the basic operating system for the computer system 30. CPU 31 is also connected to RAM 33 by busses 41, 42, and 43 to permit the use of RAM 33 as scratch pad memory. Expansion RAM 34 is optionally coupled to RAM 33 for use by CPU 31. CPU 31 is also coupled to the I/O circuitry 35 by data bus 41, control bus 42, and address bus 43 to permit data transfers with peripheral devices.

[0031] I/O circuitry 35 typically includes a number of latches, registers and direct memory access (DMA) controllers. The purpose of I/O circuitry 35 is to provide an interface between CPU 31 and such peripheral devices as display assembly 36, input device 37, and mass storage 39. Display assembly 36 of computer system 30 is an output device for displaying objects and other visual representations of data. The screen for display assembly 36 can be a device that uses a cathode-ray tube (CRT), liquid crystal display (LCD). or the like, of the types commercially available from a variety of manufacturers. Input device 37 can be a keyboard, a mouse, a stylus working in cooperation with a position-sensing display, or the like. Therefore, as used herein, the term input device will refer to any mechanism or device for entering data and/or pointing to a particular location on a screen of a computer display. The aforementioned input devices are available from a variety of vendors and are well known in the art.

[0032] Some type of mass storage 39 is generally considered desirable. However, mass storage 39 can be eliminated by providing a sufficient amount of RAM 33 and expansion RAM 34 to store user application programs and data. In that case, RAMs 33 and 34 can optionally be provided with a backup battery to prevent the loss of data even when computer system 30 is turned off. However, it is generally desirable to have some type of long term mass storage 39 such as a commercially available hard disk drive, nonvolatile memory such as flash memory, battery backed RAM, PC-data cards, or the like.

[0033] In operation, information is inputted into the computer system 30 by any suitable means such as but not limited to typing on a keyboard, manipulating a mouse or trackball, or “writing” on a tablet or on a position-sensing screen (not shown) associated with display assembly 36 CPU 31 then processes the data under control of an operating system and an application program stored in ROM 32 and/or RAM 33. CPU 31 then typically produces data which is outputted to the display assembly 36 to produce appropriate images on its screen.

[0034] Expansion bus 38 is coupled to data bus 41, control bus 42, and address bus 43. Expansion bus 38 provides extra ports to couple devices such as network interface circuits, modems, display switches, microphones, speakers, etc. to CPU 31. On some computers, the network interface circuit may be built in instead of being provided through expansion bus 38. Regardless, network communication is accomplished through the network interface circuit and an appropriate network

[0035] Still further, the present invention relates to machine readable media on which are stored program instructions for performing operations on a computer. Such media includes by way of example, magnetic disks, magnetic tape, optically readable media such as CD ROMs, semiconductor memory such as PCMCIA cards, etc. In each case, the medium may take the form of a portable item such as a small disk, diskette, cassette, etc., or it may take the form of a relatively larger or immobile Item such as a hard disk drive or RAM provided in a computer.

[0036] The network of the present invention includes a pool master 20 which can be, for example a generic server which can be but is not limited to an RPC server. The server need not be a dedicated server. All the clients 21 have a means of connecting to the pool master 20. The pool master is a request dispatcher and an agent controller. When the client makes a request, the pool master 20 will transmit the request to a pool agent 23 for transaction processing. The pool agent is a transaction processor which performs one or more functions where the totality of the functions is an application, file transfer, database processor, credentials processor or all the functions which together represent a web server.

[0037] When the communication is done through, for example, a connection oriented protocol such as TCP/IP, the Client first issues a connection request to the pool master 20, which will assign one or more pool agents 23 to the client. Then the client, communicates directly to the agent using its own communication channel 24. The pool agent 23 informs the pool master 20 whenever requests have been transmitted on such channel. The pool master 20 is configured through a configuration file which describes the pool attributes in terms of logging, services, operating system parameters and pool agents. Once the process pool is started, most of the configuration parameters may be changed dynamically using the pool application manager 22. The presence of a pool application manager, however is not always required in the operation of the present invention.

[0038] The pool application manager is a program that communicates with other programs that respect the protocol. The application manager operates such that when an application starts it registers itself with the application manager as a an application. When the developer designs the application the programmer can define “verbs” or sentences which are associated with functions in the code. When such verbs are received through its “application channel”, the associated function is executed. A generic application, called the application manager is a client to all registered applications and can send verbs to be executed by the application, while it runs. The application manager permits dynamic change in any configuration variable of a running application, terminate the process properly (i.e., the application will go through its termination phase and clean up after itself), retrieve status from a running application at regular intervals thereby monitoring the application. Thus, the application manager acts as a remote control for any registered application running on any host.

[0039] Transaction processing is done by the pool agents. Agents are application specific. However they all have a common process pool interface which gives them a common behavior. When any agent has been idle i.e., has not received any processing requests for a preselected time, the agent recognizes that it is not required any longer and it terminates on its own. This feature allows a pool to shrink when it is not being used and releases resources for other uses.

[0040] The application manager 22 provides monitoring and well as dynamic configuration capabilities. Almost all configuration parameters may be dynamically changed once the pool is started. In a monitor mode, the pool application manager 22 communicates with the pool master 20, at predetermined intervals, and receives data on the workload.

[0041] In one embodiment of the present invention as shown in FIG. 17, there are any number of clients 110 that are connected to the pool master 111. The master creates agents 112, 113, 114, etc. as required. In another embodiment shown in FIG. 18 there are any number of clients 120 which are connected to a master pool master 121. The master pool master is in turn connected to one or more pool masters 122, 123, 124, etc. Pool master 122 can create one or more pool agents 125, 126, etc as required. Similarly, pool masters 123 and 124 will each create one or more pool agents 127, 128, 129, 130 etc. In FIG. 19 the one or more clients 140 are connected to more than one pool master. In this case three pool masters are shown, 141, 142, 143 although any number is possible. Each pool master creates pool agents 144, 145, 146, 147, 148, 149 etc as required. When more than one master is present before the first connection between a client and the pool master is made the client has to send a broadcast message to choose a master. One master will respond. When you have the master of pool masters as seen in FIG. 18 there is no need for the client to broadcast. More than one master is possible in a network as long as there is a communication protocol between the masters. As shown in FIG. 20 one or more clients 160 are on the Internet and access the pool master at an Internet service provider (ISP). The pool master may be, for example, a high speed processor (CPU) 161. The agents 162, 163, 164, 165 etc may, for example, be CPU's connected with the master, such as, by a private backbone of fiber optics. Even in the other pools shown herein including, for example, FIGS. 17, 18, and 19 the pool agents may be CPUs

[0042] The pool parameters are set forth in a configuration file read by the pool master upon startup. FIG. 3 is a representation of a configuration file for the present invention. The configuration file has three sections:

[0043] a pool master section provides the pool master with specific information;

[0044] a pool agent section giving configuration parameters to the pool agent;

[0045] an environment section allowing the pool master to define environment variables for the pool agent to use. (i.e.: Database name, Libraries, etc . . . )

[0046] The pool master section of the configuration file typically sets out the following parameters:

[0047] Process Pool Identification

[0048] This is the unique identification used by the Clients to communicate to the pool. In an ONC RPC implementation the identification is a quartet of values consisting of:

[0049] ONC RPC Program Number

[0050] In an ONC RPC implementation the Program Number selected is a number consistent with the user's particular system.

[0051] ONC RPC Program Version

[0052] In an ONC RPC implementation the Program Version selected is also a number consistent with the user's particular system.

[0053] ONC RPC Server.

[0054] This is the name of the process pool Host.

[0055] ONC RPC Protocol.

[0056] This is the identification of the communication protocol that will be used by clients to communicate. It may be any suitable protocol such as for example but not limited to UDP, TCP or both depending on the server.

[0057] Kill Timeout.

[0058] When the process pool is shutting down, the master requests all the agents to shut down. The master then waits the selected kill timeout period for the agents to shut down. After the first kill timeout period expires a termination interrupt is sent to the agents. When the kill timeout period passes a second time any remaining agents are terminated. The kill timeout may be any number, however, the kill timeout should not be shorter than the longest period of time that an application specific transaction can take.

[0059] Minimum Agent.

[0060] This defines the minimum number of agents to have running at all times. If an agent dies, the pool master will ensure that there are at least this minimum number of agents running. Typically, the minimum agent is any whole number greater than or equal to one.

[0061] Log File

[0062] This configuration applies to both the pool master and the pool agent and contains the name of the log file to use which is the file name excluding any directory. The log file is the file where the process pool records everything it does. However, in the pool agent section, the log file might be changed by the agent on a per-transaction basis. In this case, the log file in the configuration file will only contain global agent logs (i.e.: RPC reports, Communications, etc.)

[0063] Log Size

[0064] This is a parameter of both the pool master and the pool agent and defines the maximum size in kilobytes the Log File may grow to be. The Logging mechanism provides a Space Protection System which ensures that a Log File will not take the entire disk space available. The log value is the number of bytes compatible with the user's system. A value of 0 indicates an infinite number.

[0065] Log Level.

[0066] This is a list of Logging levels to be enabled at startup and includes the details on a list of keywords:

[0067] All, Trace, Info, Debug, Warning, Fatal, Rpc, Process, User1, User2, . . . , User24.

[0068] The log level is a parameter of both the pool master and the pool agent. Logging levels may be regulated during runtime using the process pool application manager.

[0069] Log Host.

[0070] The log host name or host address identifies where the log daemon is running. The process pool is compatible with the log daemon. The log daemon provides a capability to have log files centralized and serviced by a single host.

[0071] CPU Limit

[0072] The CPU limit defines the maximum number of CPU cycles in seconds allowed to process a transaction. As a security measure against destructive bugs which cause a process to hang-up an entire CPU, the pool master and agents ensure that the CPU will not be used more than the above value while servicing a transaction. The CPU limit is a parameter of both the pool master and pool agent.

[0073] CPU Priority.

[0074] The CPU priority measures the pre-emptiveness of the process pool and agent on the remaining of the CPU.

[0075] Alarm

[0076] The alarm describes the maximum number of seconds allowed to process a transaction. When processing a transaction, an alarm is set. If the transaction is not completed within the allocated time frame, the transaction is aborted.

[0077] Max Idle Time

[0078] The max idle time sets forth the maximum number of seconds an agent should wait, unused, before quitting. When the idle time is reached and the agent has not been solicited, it will die, thus shrinking the process pool.

[0079] Environment Section Parameters

[0080] Each variable in the Environment Section will be defined for each Agent. This section allows an already defined variable to be overwritten only within the context of the Process Pool. The log size, log file, log level, log host, CPU limit, CPU priority, alarm are parameters of both the pool master and the pool agent. The max idle time and the environment section components are parameters of the pool agent.

[0081] As is evident in the above discussion of the process pool parameters some of the variables may have a dramatic performance impact on the process pool. For example,

[0082] Setting a short alarm period may cause all transactions to be aborted.

[0083] Setting a too high kill timeout will never shrink the pool.

[0084] Operating System Parameters

[0085] Some parameters are global to the Operating System. These include the following:

[0086] CPU Priority

[0087] The CPU Priority factor is considered on heavily used Systems. Changing its value will affect the number of times the Operating System will give the process pool the CPU. It works as a priority scheme where the higher the number, the lower the priority, thus the less often the CPU is available. On a dedicated server, the CPU Priority should be raised since no other process should use the CPU.

[0088] On shared systems, it would not have to be modified since its default value provide neutral behavior, neither preemptive, nor passive.

[0089] CPU Limit

[0090] The CPU Limit parameter should be set greater than the maximum time and preferably to at least twice the maximum time used for the longest of all transactions serviceable by the pool agent. This parameter is provided to automatically abort bogus transactions that would result in a CPU being over-taken by an pool agent. If the value of the CPU limit has been modified, if the CPU Limit becomes active (e.g., aborting transactions), the previous value for the CPU limit should be restored.

[0091] Alarm

[0092] The main difference between the alarm and the CPU Limit is that the CPU Limit is a function of CPU Cycles and the Alarm is a function of the Time (e.g., a transaction could have the CPU for only 1 second in a 10 seconds interval period.) The alarm is intended to detect transactions waiting too long for an event to occur. (e.g. if a hard drive failure causes a file to be opened too long, the alarm would abort the transaction). Preferably, the value of the alarm should be two to three times the value of the CPU Limit.

[0093] Agent Control Parameters

[0094] Minimum Agents

[0095] The minimum number of agents to have alive at all times. If agents could be created at no cost, they would be created whenever a request would come, they would service the request and then die.

[0096] The problem in having to start an agent for each request, is that it requires a lot of resources to start an agent. It is possible to have multiple users share one agent i.e., to have one Agent for 5 users. If more pool agents are required, they are created.

[0097] Maximum Idle Time

[0098] If the Maximum Idle Time is set too low, the process pool will lose time creating pool agents when existing agents just killed themselves because they were waiting for work. This value is difficult to evaluate and heuristic methods are best for this kind of parameter. However, the following should be considered:

[0099] 1-The time the slowest user takes between transactions?

[0100] 2-The number of agent transactions in a business transaction?

[0101] 3-The length of time the Server resources can be allocated to non-working agents?

[0102] Kill Timeout

[0103] This parameter affects only the shut-down of the process pool. It defines how much time is left for a non-terminated transaction to complete. When the pool master dies, it tries to make sure no pool agents are still running.

[0104] Process Pool Architecture

[0105] The use of the configuration parameters will now be described to demonstrate how the process pool operates. A distinction is made between the protocols used since the behavior of the process differs whether a connection oriented protocol such as TCP/IP is used or not. However, some steps are always the same, regardless of the protocol used.

[0106] Pool Architecture Common to Connection Oriented Protocol and Connectionless Oriented Protocol

[0107] Start-up of a Process Pool

[0108] As shown in FIGS. 4 and 5, when the pool master 20 starts, it first reads the configuration file 25, then registers itself with the network connection service i.e., the port mapper 26 in an ONC RPC implementation. Once successfully registered the pool master 20 then starts the minimum agent 27 that must be running. The pool master sets up its operating system parameters and stands in readiness waiting for requests to arrive.

[0109] Shutdown of a Process Pool

[0110] As depicted in FIG. 6, upon shutdown of a process pool, the pool master will send a message to all agents to die, then wait for the kill timeout seconds to pass. After the timeout has expired, if some agents still remain, the pool master 20 will send them a normal termination interrupt and wait another kill timeout period. See FIG. 7. After the timeout expires again, if left over pool agents still remain, the pool master will abort and terminate itself. See FIG. 8.

[0111] Connectionless Process Pool Such as UDP/IP

[0112] In this model, clients request transactions and each request is an atomic operation independent from other transactions. Moreover, each transaction with the same parameters will always give the same result. For instance, to retrieve the list of users belonging to a group, the transaction parameter is the group name or Id, and the result will always be the same list of users. On the other hand, when creating an entity such as a data or information artifact the process always returns a different entity Identification Number.

[0113] As seen in FIG. 9, when the pool master receives a transaction request, it transferred to the first available agent which then becomes busy. If all agents are busy, as is the case in FIG. 10, when a transaction is received, the pool master will create a new agent. The new agent automatically becomes busy and is assigned the transaction. When one or more agents have been idle for maximum idle time, they terminate, and the pool shrinks. See FIG. 11. If the number of agents goes below the predetermined minimum agents parameter, the master will restart new ones.

[0114] Connection Oriented Process Pool Such as TCP/IP

[0115] In this model, Clients establish a connection with the server and each have their own communication channel to the Server. The protocol ensures the delivery of the request, therefore there is no retry or timeout in the packet transport. Moreover, since the server has its own connection, transactions may have dependencies on other transactions:

[0116] For instance, Transaction 1 could be: get me the 10 first users in the group Group1. and Transaction 2 could be: get me the next 10. Transaction 2 repeated would give different results each time since they would be the 10 users after the last call.

[0117] Establishing the Connection

[0118] Prior to any transaction request, the Client application must request a connection to the pool master. The pool master selects and idle agents and gives that agent the request to process. The agent responds to the connection request by creating a privileged communication channel with the Client. From now on, the Client will talk directly to the agent, without going through the pool master. See FIG. 12.

[0119] If there are no idle agents available when the pool master receives a connection request, the pool master will not create a new one, instead he will find an agent with resources available provided this agent is not already servicing its maximum capacity and pass the request. In the TCP mode, the pool master creates new agents only when all agents are at full capacity. See FIG. 13

[0120] Request Processing

[0121] Since Clients have privileged communications with their agent, the pool master is not aware of when an agent is busy or waiting for a request. The agent will notify the pool master whenever the agent becomes busy. Thus, the pool master can properly assign new connections and report accurate data to the application manager. The agent will notify the pool master when the transaction has been processed and the agent becomes available again. See FIG. 14.

[0122] Dual Protocol Process Pool

[0123] A dual protocol pool is a process pool that supports both connection and connectionless protocols. In dual protocol pools, some requests may be requested on the connection channel and other requests on the connectionless channel. The connectionless requests don't change in dual process pools because of the privileged communication channel. However, there is a small modification of the dispatch routine when there is a connection request. When a connection request is submitted to the pool master but all agents are either busy or are connectionless Agents the connection request will be dispatched to the first connectionless Agent that is not busy at the time. This occurs because it is very expensive in resources to create a new agent. See FIG. 15.

EXAMPLE

[0124] The benefits of the present invention may be seen from the following example.

[0125] The system has a client/server call tracking and workflow system. The user can access the system using an MS Windows-based client software on the PC's. The users are presented with a model for tracking and accessing customer calls. Client functions include creating, updating, routing customer calls and performing various other categories, such as mainframe transactions, and viewing images relating to the customer calls. Specifically, there is a dedicated server process per client upon successful credentials validation.

[0126] In this example of the process pool, an RPC server provides access to a database. Some of the features of the process pool are:

[0127] Each process pool master controls access to one database.

[0128] Multiple masters may be run on a single host each of which controlling a different database.

[0129] The RPC program and version numbers are determined by the system implementor.

[0130] The process and communication architecture of the process pool is outlined in FIG. 16. The RPC clients establish communication with the pool master by looking up its TCP/IP port number with the system portmapper server. The pool master performs the following functions:

[0131] Starts a pre-defined number of agents.

[0132] Registers as an RPC server with the portmapper.

[0133] Dispatches each incoming RPC to an available agent by sending the client's database logon information and TCP/IP socket descriptor.

[0134] The agents receive notification of the RPC's from the pool master and process the service requests. Reply to the clients is made directly from the agents by using the TCP/IP socket descriptor passed from the master.

[0135] With the process pool architecture, the client application contacts the master to establish a connection to the database. The master is an RPC server which is contacted in the standard manner through the port mapper. The program and version numbers assigned to the daemon are up to the system implementor to determine. Once the RPC client handle for the agent is created, the application must call a credential validation to establish a database connection. The RPC client handle returned by this function is used for all subsequent RPC functions. This architecture allows the client application to have process pool connections open within the same process context. When the client application has no further need to communicate to the agent, it issues a credentials release.

[0136] All of the RPC's are stateless, which means that any available agent can service any request. For example, if a given client issues a getobject RPC in order to retrieve the data for a customer call, this will be serviced by a particular agent, say A₀. If the next RPC issued by the client is getprofile, this RPC may be serviced by another agent, A₁. This architecture allows for fewer agents to be run than there are clients, since at any given time only a subset of the clients are likely to be actively issuing RPC's.

[0137] Process Pool Comparison With Prior Client/Server Applications

[0138] Table 1 is Implementation Model A showing the operation of a typical prior art client/server model where there is a dedicated pool agent.

[0139] Table 2 is Implementation Model B where there are a fixed number of agents. The protocol is a connectionless protocol.

[0140] Table 3 is Implementation C where there are a fixed number of pool agents and the protocol is a connection protocol.

[0141] Table 4 is the process pool Implementation of the present invention for a connectionless protocol.

[0142] Table 5 is the process pool Implementation of the present invention for a connection protocol.

[0143] As shown in Table 4 the Server starts up and registers itself as “being alive”. The Server starts “X” number of agents (where X is a predetermined number based on the system's complexity). At the same time a first Server Agent 1 initializes and sets a timeout to for a predetermined period of time. The server becomes idle and waits for a connections request from a client application. Server Agent 1 also becomes idle. When a client application initiates a communication, the Server receives the communication request and finds an agent with available resources. If no agent is found, the Server creates a new Agent and selects it for the application. As communication is established with the Server by the Client Application, the Server forwards the request to the selected Agent which in turn accepts the connection. The Server thereupon becomes idle. The Client application sends a request which is received by the Server Agent. The Server Agent processes the request, responds to the request and later becomes idle. The Client application receives the response from the Server Agent. Additional requests maybe received by the server agent from the Client Application. When such requests are received by the Server Agent it processes the request and responds to the request. When the Client Application terminates communication, the Server Agent closes communication and decrements the server counter of “live” connections according to a weighted scheme where users receive priority over any number of nonuser applications. Thereupon the first server agent becomes idle. If the Server Agent remains idle for more than the predetermined period of time the Server Agent times out and the process terminates. The Server recognizes that the Server Agent has died. If there are fewer agents than the number that was predetermined the Server will create a new Agent.

[0144] If at any point during the first Client Application's communication with the Server or the Server Agent a second Client Application 2 initiates a communication and establishes communication with the Server. The Server receives the communication request and finds an Agent with available resources. The second Client Application sends a request to the Server. If no Agent is found with available resources to Server creates a new Server Agent and selects it to process the Client Application request. The second Server Agent accepts the connection from the Server Agent and initializes. When the second server agent initializes it sets a timeout to a predetermined time period. When the Server forwards the request from Client Application to the Server Agent, the Server Agent accepts the connection, receives the request. After processing the request the Second Server Agent responds to the client application. After responding to the request the second server agent becomes idle. If the second Server Agent remains idle for more than the predetermined period of time the second Server Agent times out and the process terminates. The Server recognizes that the second Server Agent has died. If there are fewer agents than the number that was predetermined the Server will thereupon create a new Agent.

[0145] The advantages of the present invention include optimizing server resources. When an agent is idle for too long a period of time it will terminate thus releasing server resources. In addition, there are a variable number of agents. As a result, if there are a large number of clients more agents will be created thus fulfilling the need for more agents. The number of agents existing becomes a function of the real workload as opposed to an estimation of the workload. As a result, the server resources are used to their optimum. The arrangement of Table 4 can also be configured to operate in the manner of the models depicted in Tables 1-3. Table 5 is the process pool implementation of the present invention for a connection protocol as opposed to the connectionless protocol of Table 4. The arrangement of Table 5 can also be configured to operate in the manner of the models depicted in Tables 1-3. TABLE 1 Process Pool Comparison with “Regular” Client/Server Applications Implementation Model A. Dedicated Agent Client Application Server Application Server Agent START OF SERVER Registers itself as “being alive” Becomes Idle (Wait for connections requests) Initiate Communication Receives Communication Request Creates an Agent Initializes Forwards the request to the agent Accepts the request Communication is established with the Agent Becomes Idle Becomes Idle Sends a Request Receives the request Processes the request Receives the Response Responds to the request <PROCCESSES MULTIPLE REQUESTS> . . . Terminates communication Closes communication Process Terminates # there will be a large number of agents. Hence the Server requires a lot of Resources # time creating agents than actually doing the work.

[0146] TABLE 2 Implementation Model B. Fixed number of Agents (Connection less: i.e. UDP/IP) Client Application Server Application Server Agent 1 Server Agent 2 Server Agent x START OF SERVER Registers itself as “being alive” Starts X Agents (where X is Initializes Initializes Initializes configurable) Sets the current agent to 1 Becomes Idle Becomes Idle Becomes Idle Becomes Idle (Wait for connections requests) Initiate Communication Receives Communication Request Communication is Accepts the Request established with the Server Sends a Request Sends the request to the current agent Receives the request Increments the current agent Processes the request Receives the Response Becomes Idle Responds to the request Sends a Request Sends the request to the current agent Receives the request Increments the current agent Processes the request Receives the Response Becomes Idle Responds to the request Terminates communication Closes communication END OF SERVER Terminates Agent 1 Process Terminates Terminates Agent 2 Process Terminates Terminates Agent x Process Terminates Process Terminates # function of the server configuration. # If the server is configured with 10 agents and 20 clients submit a request simultaneously, # 10 agents will have to wait.

[0147] TABLE 3 Implementation Model C. Fixed number of Agents (Connection oriented: i.e.: TCP/IP) Client Application 1 Client Application 2 Server Application Server Agent 1 Server Agent 2 START OF SERVER Registers itself as “being alive” Starts X Agents (where X is Initializes Initializes configurable) Sets the current agent to 1 Becomes Idle Becomes Idle Becomes Idle (Wait for connections requests) Initiate Communication Receives Communication Request Communication is established Forwards the request to the current Accepts the Connection with the Server agent Sends a Request Increments the current agent Receives the request Becomes Idle Processes the request Receives the Response Responds to the request Initiate Communication Receives Communication Request Sends a Request Communication is established Forwards the request to the current Accepts the Connection with the Server agent Sends a Request Increments the current agent Receives the request Receives the Response Becomes Idle Processes the request Receives the Response Responds to the request Terminates communication Closes communication Terminates communication Closes communication END OF SERVER Terminates Agent 1 Process Terminates Terminates Agent 2 Process Terminates Process Terminates # the response time is a function of the server configuration. # If the server is configured with 10 agents and 20 clients submit a request simultaneously, # 10 agents will have to wait.

[0148] TABLE 4 Process Pool Implementation (Connection Less Protocol) Variable Number of Agents NOTE: All configuration variables may be changed dynamically through the Application Manager Client Application 1 Client Application 2 Server Application Server Agent 1 Server Agent 2 START OF SERVER Registers itself as “being alive” Starts X Agents (where X is Initializes configurable) (Sets a timeout to Z minutes) Becomes Idle Becomes Idle (Wait for connections requests) Initiate Communication Receives Communication Request Finds an Idle Agent If no agent is found, create a new one and select it Sends a Request Forwards the request to the Receives the request selected agent Becomes Idle Processes the request Receives the Response Responds to the request Becomes Idle Initiate Communication Receives Communication Request (from client Application 2) Sends a Request Communication is Finds an Idle Agent established with the Server If no agent is found, create a new one and select it Sends a Request Forwards the request to the Receives the request selected agent Processes the request Receives Communication Request (from client Application 1) Receives the Response Finds an Idle Agent Responds to the request If no agent is found, create a new Becomes Idle one and select it Forwards the request to the Receives the request selected agent Processes the request Receives the Response Responds to the request Becomes idle Terminates communication AGENT TIMEOUT If Agents has been idle for more than ‘Z’ minutes, it times-out Server ‘catches’ that the agent died. As long as there are less than ‘X’ agents, create a new agent # more agents will be created. # Therefore the server is used to its best.

[0149] TABLE 5 Process Pool Implementation (Connection Oriented Protocol) Variable number of Agents NOTE: All configuration variables may be changed dynamically through the Application Manager Client Application 1 Client Application 2 Server Application Server Agent 1 Server Agent 2 START OF SERVER Registers itseif as “being alive” Starts X Agents (where X is Initializes configurable) (Sets a timeout to Z minutes) Becomes Idle Becomes Idle (Wait for connections requests) Initiate Communication Receives Communication Request Finds an Agent with less than Y connections (where Y is configurable) If no agent is found, create a new one and select it Communication is Forwards the request to the Accepts the Connection established with the Server selected agent Sends a Request Becomes Idle Receives the request Processes the request Receives the Response Responds to the request Becomes Idle Initiate Communication Receives Communication Request Sends a Request Communication is Finds an Agent with less than Y Receives the request Accepts the Connection established with the Server connections (where Y is configurable) Sends a Request If no agent is found, create a new Processes the request Initializes one and select it (Sets a timeout to Z minutes) Receives the Response Forwards the request to the Responds to the request Accepts the Connection selected agent Becomes Idle Receives the request Terminates communication Closes communication Processes the request Receives the Response Decrements Server Responds to the request counter of ‘live’ connections Becomes Idle Becomes Idle AGENT TIMEOUT If Agent has been idle for more than ‘Z’ minutes, it times-out Server ‘catches’ that the agent If there are no live died connections, Process Terminates As long as there are less than ‘X’ agents, create a new agent # more agents will be created. # Therefore the server is used to its best. 

1. A method of operating a client server comprising: a) dispatching a request to a server agent with available resources; b) creating a new server agent if no presently existing server agent has available resources when a request is received; c) said server agent processing and responding to the request; d) said server agent dying after a configurable time has transpired without requests.
 2. The process according to claim 1 further comprising the step of initializing the server.
 3. The process according to claim 2 further comprising the step of creating a predetermined number of server agents.
 4. The process according to claim 3 further comprising the step of said server agent becoming idle after responding to the request.
 5. A client server system comprising one or more clients adapted to make requests to a pool master, said pool master being adapted to receive requests from said clients and transmit said requests to a pool agent for processing, said pool master being adapted to create additional pool agents as needed, said pool agents terminating their existence when a configurable amount of time has transpired without requests.
 6. The client server system of claim 5 where the is more than one pool master.
 7. The client server system of claim 5 where there is a master pool master adapted to receive requests from said master pool master to one or more pool masters.
 8. A multiprocessor computing apparatus comprising one or more computers hosting an application program generating a request, each computer comprising a generating means for submitting requests from the application to a pool master, said pool master being adapted to receive requests from said clients and transmit said requests to a pool agent for processing, said pool master being adapted to create additional pool agents as needed, said pool agents terminating their existence when a configurable amount of time has transpired without requests.
 9. The apparatus according to claim 8 wherein there is more than one pool master.
 10. The apparatus according to claim 8 wherein there is a master pool master that is adapted to transmit requests to one or more of said pool masters.
 11. In a data-processing system including at least one server, a plurality of clients for generating requests, each request specifying an operation to be performed between a client and a server, and at least one connection for providing a communication path between a client and a server, said system comprising a server adapted to create a predetermined number of server agents; said server adapted to receive a request from a client and send the request to a server agent with available resources; said server being adapted to create a server agent if no presently existing server agent has available resources, said server agent being adapted to receive the client's request from the server and process it, said server agent terminating a configurable time after processing the request if no additional requests are received by said server agent. 